//package com.jgy.config;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
//import org.springframework.web.filter.CorsFilter;
//
///**
// * @author 姜光远
// * @date 2022/10/23 22:45
// */
//@Configuration
//public class CorsConfiguration {
//
//    /**
//     *   整合了spring security之后，cros（可以理解为跨域请求）会优先走security的过滤器，security中默认放行get/head等简单方法
//     *    对于post、delete、put方法则需要配置才能跨域。
//     *    一般的WebMvcConfigurer拦截器配置还是会失效的，因为security中有个过滤器的优先级是高于拦截器的，会把复杂的请求拦截了，
//     *    所以需要在过滤器中配置跨域，并且保证配置的过滤器优先级是高于security的过滤器，否则还是会失效。
//      */
//
////    方案一
////    @Bean
////    public WebMvcConfigurer corsConfigurer() {
////        return new WebMvcConfigurer() {
////            @Override
////            public void addCorsMappings(CorsRegistry registry) {
////                registry.addMapping("/**")
////                        .allowedOrigins("*")
////                        .allowCredentials(true)
////                        .allowedMethods("GET", "POST", "PUT", "DELETE");
////            }
////        };
////    }
//
//    //方案二
////    @Override
////    public void addCorsMappings(CorsRegistry registry) {
////        registry.addMapping("/**")
//////                .allowedOrigins("*")
////                .allowedOriginPatterns("*")
////                .allowCredentials(true)
////                .allowedMethods("*")
////                .maxAge(3600);
////    }
////
//
////    方案三
//    // 当前跨域请求最大有效时长。这里默认1天
//    private static final long MAX_AGE = 24 * 60 * 60;
//
//    private org.springframework.web.cors.CorsConfiguration buildConfig() {
//        org.springframework.web.cors.CorsConfiguration corsConfiguration = new org.springframework.web.cors.CorsConfiguration();
//        corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
//        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
//        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
//        corsConfiguration.setMaxAge(MAX_AGE);
//        return corsConfiguration;
//    }
//
//    @Bean
//    public CorsFilter corsFilter() {
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//        source.registerCorsConfiguration("/**", buildConfig()); // 4 对接口配置跨域设置
//        return new CorsFilter(source);
//    }
//
//}